
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[SP_TCAMAR_ANTC_D01]
/*-------------------------------------------------------*/    
/*---Empresa              : OFISIS S.A.                --*/    
/*---Cliente              : SANTILLAN                  --*/    
/*---Sistema              : Tesoreria                  --*/    
/*---Modulo               : Empresa                    --*/    
/*---Programa             : Anulacion (Aplicacion      --*/    
/*---                       Docs. Anticipo        --*/    
/*---Script               : tcmovi_b.sql               --*/    
/*---Nombre SP            : SP_TCAMAR_ANTC_D01         --*/    
/*---Desarrollado por     : EVP                        --*/    
/*---Fecha Creaci=n       : 05/02/2001                 --*/    
/*---Base Datos           : oracle                --*/    
/*---Versi=n              : 8.0                        --*/    
/*---Invoca a SP          :                            --*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/    
/*---Modificado 1 por     : DVILLACRES          --*/    
/*---Fecha Modificaci=n   : 11/04/2001                 --*/     
/*---Detalle Modificaci=n : SQL           --*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/    
/*---Modificado 1 por     : Maribel Julca Rodriguez    --*/    
/*---Fecha Modificaci©n   : 21/04/2005                 --*/     
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA, CO_USUA_MODI  --*/    
/*-------------------------------------------------------*/    
  
/*-------------------------------------------------------*/    
/*---Comentarios                                       --*/    
/*---                                                  --*/    
/*---                                                  --*/    
/*-------------------------------------------------------*/    
    
/*-------------------------------------------------------*/    
/*---Drop Proc SP_TCAMAR_ANTC_D01                      --*/    
/*---Grant all on SP_TCAMAR_ANTC_D01 to public         --*/     
/*---SP_TCAMAR_ANTC_D01                                --*/    
/*-------------------------------------------------------*/    
@ISCO_EMPR  TD_VC_002,    
@ISCO_USUA_MODI  TD_VC_008_USUA,    
@ISNU_AMAR   TD_VC_008,    
@ISCO_TIPO_OPER  TD_VC_003,    
@IDFE_ANUL   TD_DT_001,    
@ISCO_UNID_CONC  TD_VC_003,    
@IDFE_AMAR  TD_DT_001  
 As  
Declare         
    @VNIM_MOVI_ANTE  TD_NU_016_004,      
    @OSTI_DOCU   TD_VC_003,    
    @CSTI_DOCU_ENTI  TD_VC_003,    
    @CSNU_DOCU_ENTI  TD_VC_020,    
    @CNIM_CONV_DOCU  TD_NU_016_004,      
    @VSST_SIGN       TD_VC_001,    
    @CNIM_DETA       TD_NU_016_004,      
    @CSTI_ENTI       TD_VC_001,    
    @CSCO_ENTI       TD_VC_020,    
    @VSCO_ESTA_LETR     TD_VC_003,     
    @VNNU_SECU          TD_IN_001,    
    @VSCO_TIPO_INAN     TD_VC_003,    
    @VSST_GEAS_ANUL     TD_VC_001,    
    @VSCO_TIPO_OPE1     TD_VC_003 ,     
  @OSTI_DOCU_PERC TD_VC_003  
    

 BEGIN TRAN SP_TCAMAR_ANTC_D01    
    
    DECLARE CU_TCAMAR_ANTC_D01_1 CURSOR     
    FOR    
     
      Select TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI,     
      IM_CONV_DOCU, IM_DETA    
      From   TDAMAR_ANTC    
      Where  CO_EMPR = @ISCO_EMPR    
      And    CO_UNID_CONC = @ISCO_UNID_CONC    
      And    NU_AMAR = @ISNU_AMAR    
      And    FE_AMAR = @IDFE_AMAR    
    
     OPEN CU_TCAMAR_ANTC_D01_1    
     FETCH CU_TCAMAR_ANTC_D01_1 INTO     
     @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI,     
     @CSNU_DOCU_ENTI, @CNIM_CONV_DOCU, @CNIM_DETA     
    
     WHILE (@@FETCH_STATUS = 0)    
       BEGIN     
 IF (@@FETCH_STATUS < 0)    
     Begin    
  RAISERROR 20001 'FIN DE ARCHIVO'    
  CLOSE CU_TCAMAR_ANTC_D01_1    
  DEALLOCATE CU_TCAMAR_ANTC_D01_1    
  RETURN    
     End     
    
          /* Devuelve el Tipo Documento */    
          Exec SP_TTDOCU_CNTB_Q01 6,@OSTI_DOCU Output     
    Exec SP_TTDOCU_CNTB_Q01 20, @OSTI_DOCU_PERC OUTPUT   
  
If @CSTI_ENTI = 'C'      
      BEGIN    
                 If @CSTI_DOCU_ENTI != @OSTI_DOCU      
     /* Para Comprobantes de Percepcion */       
      If @CSTI_DOCU_ENTI = @OSTI_DOCU_PERC And       
      Exists ( Select NU_COMP_PERC From TCCOMP_PERC Where CO_EMPR = @ISCO_EMPR And NU_COMP_PERC = @CSNU_DOCU_ENTI )      
        Begin      
       Exec SP_TCPERC_ANUL_D02 @ISCO_EMPR, @ISCO_USUA_MODI, @CSCO_ENTI, @CSNU_DOCU_ENTI, null, null, null,null,null,@ISNU_AMAR  
               
         If @@error <> 0      
       Begin      
          Close CU_TCAMAR_ANTC_D01_1      
         Deallocate CU_TCAMAR_ANTC_D01_1      
         Rollback tran SP_TCAMAR_ANTC_D01      
         Return      
       End      
         End    
      Else      
  
                    Update   TMDOCU_CLIE    
                    Set      IM_PAGA = IsNull(IM_PAGA,0) - Round(@CNIM_CONV_DOCU,2), CO_ESTA_DOCU = 'ACT',    
                            FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI    
                    Where    CO_EMPR = @ISCO_EMPR     
                        And CO_CLIE = @CSCO_ENTI     
                        And CO_TIPO_DOCU = @CSTI_DOCU_ENTI     
                        And NU_DOCU_CLIE = @CSNU_DOCU_ENTI    
  
   
                 Else    
     Begin     
       Select @VSCO_ESTA_LETR = CO_ESTA_DOCU     
                     From   TMLETR_CLIE    
                     Where  CO_EMPR = @ISCO_EMPR    
                     And    NU_LETR_CLIE = @CSNU_DOCU_ENTI    
    
                     Update   TMLETR_CLIE    
                     Set      IM_PAGA = IsNull(IM_PAGA,0) - Round(@CNIM_CONV_DOCU,2) , CO_ESTA_DOCU = 'ACE',    
                              FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI    
                     Where    CO_EMPR = @ISCO_EMPR     
                          And NU_LETR_CLIE  = @CSNU_DOCU_ENTI     
    
       Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1    
                     From   TDKARD_DOCU    
                     Where  CO_EMPR = @ISCO_EMPR    
    
                     Insert Into TDKARD_DOCU (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE, CO_ESTA_ACTU,    
                                              CO_ESTA_DOCU, NU_CORR_MODI, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)    
                     Values ( @ISCO_EMPR, @VNNU_SECU , @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @CSCO_ENTI,    
                       'ACE',  @VSCO_ESTA_LETR, @VNNU_SECU, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())      
     
                     If @@error <> 0    
                        Begin    
                          Rollback tran    
                          Return    
                         End    
                   End    
      END    
          Else    
      BEGIN    
                If @CSTI_DOCU_ENTI != @OSTI_DOCU      
                   Update   TMDOCU_PROV     
                   Set      IM_PAGA = IsNull(IM_PAGA,0) - Round(@CNIM_CONV_DOCU,2), CO_ESTA_DOCU = 'ACT',    
                            FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI    
                   Where    CO_EMPR = @ISCO_EMPR     
                      And CO_PROV = @CSCO_ENTI     
                      And CO_TIPO_DOCU = @CSTI_DOCU_ENTI     
                      And NU_DOCU_PROV = @CSNU_DOCU_ENTI     
                Else    
                  Begin    
      Select @VSCO_ESTA_LETR = CO_ESTA_DOCU     
                    From   TMLETR_PROV    
                    Where  CO_EMPR = @ISCO_EMPR    
                    And    CO_PROV = @CSCO_ENTI    
                    And    NU_LETR_PROV = @CSNU_DOCU_ENTI    
    
                    Update   TMLETR_PROV     
                    Set      IM_PAGA = IsNull(IM_PAGA,0) - Round(@CNIM_CONV_DOCU,2) , CO_ESTA_DOCU = 'ACE',    
                             FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI    
                    Where    CO_EMPR = @ISCO_EMPR     
                             And CO_PROV = @CSCO_ENTI    
                             And NU_LETR_PROV  = @CSNU_DOCU_ENTI     
    
       Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1    
                     From   TDKARD_DOCP    
                     Where  CO_EMPR = @ISCO_EMPR    
    
                     Insert Into TDKARD_DOCP (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV, CO_ESTA_ACTU,    
                                              CO_ESTA_DOCU, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )    
                     Values ( @ISCO_EMPR, @VNNU_SECU , @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @CSCO_ENTI,    
                       'ACE',  @VSCO_ESTA_LETR, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())      
     
                     If @@error <> 0    
                        Begin    
                          Rollback tran    
         Return    
                         End    
                  End    
      END    
    
          If @@error <> 0    
            Begin     
              Close CU_TCAMAR_ANTC_D01_1    
       Deallocate CU_TCAMAR_ANTC_D01_1    
              Rollback tran    
              Return      
            End    
    
         FETCH CU_TCAMAR_ANTC_D01_1 INTO     
         @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI,     
         @CSNU_DOCU_ENTI, @CNIM_CONV_DOCU, @CNIM_DETA     
    
      END     
    
      CLOSE CU_TCAMAR_ANTC_D01_1     
      DEALLOCATE CU_TCAMAR_ANTC_D01_1    
    
      SELECT @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSST_GEAS_ANUL = ST_GEAS_ANUL    
      FROM   TMPARA_TESO     
      WHERE  CO_EMPR = @ISCO_EMPR    
    
      If @VSST_GEAS_ANUL = 'N'    
         Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_INAN    
      Else        
        Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER    
    
      Update  TCAMAR_ANTC    
      Set     CO_TIPO_OPER = @VSCO_TIPO_OPE1,    
       TI_SITU = 'ANU',     
              CO_USUA_MODI = @ISCO_USUA_MODI,    
              FE_USUA_MODI = Getdate()    
      Where CO_EMPR = @ISCO_EMPR      
      And    CO_UNID_CONC = @ISCO_UNID_CONC    
      And    NU_AMAR = @ISNU_AMAR    
      And    FE_AMAR = @IDFE_AMAR    
    
      If @@error <> 0    
         Begin    
           Rollback Tran    
           Return    
         End    
          
      Insert Into TTAMAR_ANTA(CO_EMPR, CO_UNID_CONC, NU_AMAR, FE_AMAR, CO_TIPO_OPER, FE_ANUL, ST_CONT, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)    
      Values (@ISCO_EMPR, @ISCO_UNID_CONC, @ISNU_AMAR, @IDFE_AMAR, @VSCO_TIPO_OPE1,  @IDFE_ANUL, 'N', @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())     
    
      If @@error <> 0    
         Begin    
           Rollback tran    
   Return    
         End    
    
COMMIT TRAN    
/*------------------------ Fin ------------------------------*/

GO
